package mvc.handlers;

import session.EditPianoLocal;
import session.ListaEsamiLocal;
import util.InterfaceUtente;

import mvc.framework.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 * Handler per gestire l'azione di visualizzazione del profilo di un utente
 * 
 * @author Grillo
 */
public class RemoveEsameHandler extends AbsRequestHandler {

    //costanti di errore
    public final static int ERR_LOGIN = 1;

    private final static String ACTION_NAME = "removeEsame";

    public RemoveEsameHandler(DialogHandler dHandler) {
        super(dHandler);

        //Aggiungo la descrizione degli errori
        errors.add("L'azione richiesta necessita di essere collegati e avere le autorizzazioni necessarie");
    }

    public String getActionName() {
        return ACTION_NAME;
    }
    
    public void setNextPage() {
        nextPage = "/views/listaEsami.jsp";
    }
    
    public int validate() {
        Integer idEsame = dialogHandler.getParameter("id")!=null ? Integer.parseInt(dialogHandler.getParameter("id")) : 0;

        if(SessionManager.getAttribute(dialogHandler.getSession(), "tipo_utente")==null || !SessionManager.getAttribute(dialogHandler.getSession(), "tipo_utente").equals("STUDENTE")) {
            nextPage = "/views/home.jsp";
            return ERR_LOGIN;
        }

        return SUCCESS;
    }

    public int execute() {
        Integer idEsame = dialogHandler.getParameter("id")!=null ? Integer.parseInt(dialogHandler.getParameter("id")) : 0;
        Integer matricola = ((InterfaceUtente)SessionManager.getAttribute(dialogHandler.getSession(), "utente")).getMatricola();
        EditPianoLocal removeBean = null;
        ListaEsamiLocal esamiBean = null;

        //Bind agli EJB
        try {
            Context c = new InitialContext();
            removeBean = (EditPianoLocal) c.lookup("java:comp/env/EditPianoBean");
            esamiBean = (ListaEsamiLocal) c.lookup("java:comp/env/ListaEsamiBean");
        } catch (NamingException ne) {}

        removeBean.removeEsame(matricola, idEsame);
        
        SessionManager.setConfirmMessage(dialogHandler.getSession(), "Eliminazione avvenuta con successo");
        SessionManager.setAttribute(dialogHandler.getSession(), "listaEsami", esamiBean.getListaEsamiByMatricola(matricola, "st"));
        nextPage = nextPage + "?matricola=" + matricola + "user=st";
        
        return SUCCESS;
    }

    @Override
    public IRequestHandler clone(DialogHandler dHandler) throws CloneNotSupportedException {
        return new RemoveEsameHandler(dHandler);
    }
}